home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / elk-2_0.lha / elk-2.0 / examples / scheme / perm < prev    next >
Text File  |  1992-08-05  |  399b  |  22 lines

  1. ;;; -*-Scheme-*-
  2.  
  3. (define (perm x)
  4.   (if (null? x)
  5.       (list x)
  6.       (let ((res '()))
  7.         (for-each
  8.           (lambda (e)
  9.         (set! res (append res (map (lambda (p) (cons e p))
  10.                        (perm (del e x))))))
  11.       x) res)))
  12.  
  13. (define (del e l)
  14.   (let loop ((r l))
  15.     (if (pair? r)
  16.     (if (eq? e (car r))
  17.         (loop (cdr r))
  18.         (cons (car r) (loop (cdr r))))
  19.     '())))
  20.  
  21. (print (perm '(a b c d)))
  22.